package com.bm.server.util;

import com.bm.server.dto.CharmDto;
import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;

import java.util.List;
import java.util.concurrent.TimeUnit;

/**
 * ━━━━━━神兽出没━━━━━━
 * 　　　┏┓　　　┏┓
 * 　　┏┛┻━━━┛┻┓
 * 　　┃　　　　　　 ┃
 * 　　┃　　　━　　　┃
 * 　　┃　┳┛　┗┳　  ┃
 * 　　┃　　　　　　 ┃
 * 　　┃　　　┻　　　┃
 * 　　┃　　　　　　　┃
 * 　　┗━┓　　　┏━┛Code is far away from bug with the animal protecting
 * 　　　　┃　　　┃    神兽保佑,代码无bug
 * 　　　　┃　　　┃
 * 　　　　┃　　　┗━━━┓
 * 　　　　┃　　　　　　　┣┓
 * 　　　　┃　　　　　　　┏┛
 * 　　　　┗┓┓┏━┳┓┏┛
 * 　　　　　┃┫┫　┃┫┫
 * 　　　　　┗┻┛　┗┻┛
 * ━━━━━━永无BUG!━━━━━━
 *
 * @Description: Redisson(看门狗)--分布式锁（RedLock-红锁）
 * @Author: 邢朋辉
 * @Date: 2022/7/26 10:01
 */
public class RedissonUtil {
    //连接

    private static RedissonClient client;
    static {
        //1.连接服务器
        //实例化配置对象
        Config config=new Config();
        //设置配置信息
        config.setThreads(9);
        //单机版
        config.useSingleServer().setAddress("redis://124.221.58.106:6380").setPassword("123456");
        //获取客户端对象
        client= Redisson.create(config);
    }
    //新增
    public static void addHash(String key,String field,Object val){
        client.getMap(key).put(field,val);
    }
    public static void addStr(String key,Object val){
        client.getBucket(key).set(val);
    }
    public static <T> void addList(String key, List<CharmDto> list){
        client.getList(key).addAll(list);
    }
    //校验
    public static boolean checkField(String key,String field){
        return client.getMap(key).containsKey(field);
    }
    //获取
    public static Object getHash(String key,String field){
        return client.getMap(key).get(field);
    }
    public static Object getStr(String key){
        return client.getBucket(key).get();
    }
    public static List<Object> getList(String key){
        return client.getList(key).readAll();
    }
    //设置有效期
    public static void expire(String key,long seconds){
        client.getKeys().expire(key,seconds, TimeUnit.SECONDS);
    }
    //验证是否存在
    public static boolean hasKey(String key){
        return client.getKeys().countExists(key)>0;
    }


}
